import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { VantResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig(({ mode }) => {
  const env = loadEnv(mode, process.cwd())
  const isProduction = mode === 'production'
  
  // 生产环境部署的基础路径（如Nginx子目录/charge）
  const base = '/charge/' 

  // 始终使用生产环境API地址
  const baseApiUrl = 'https://znservice.sxqc.com:11054/'  // 只保留生产后端接口根地址

  return {
    base: base,  // 生产环境基础路径（关键）
    plugins: [
      vue(),
      Components({
        resolvers: [VantResolver()],
        dts: true
      })
    ],
    resolve: {
      alias: {
        '@': path.resolve(__dirname, './src')  // 将@指向src目录
      }
    },
    server: {
      host: '0.0.0.0',
      port: 5174,
      open: false,
      proxy: {
        '/api': {
          target: baseApiUrl,  // 无论开发还是生产，都使用生产环境地址
          changeOrigin: true,
          rewrite: path => path.replace(/^\/api/, '')
        }
      }
    },
    // 生产环境构建优化
    build: {
      outDir: 'dist',  // 打包输出目录（默认即可）
      assetsDir: 'assets',  // 静态资源存放目录
      terserOptions: {
        compress: {
          drop_console: false,  // 移除console.log等控制台输出（减小体积）
          drop_debugger: false  // 移除debugger语句
        }
      },
      sourcemap: false,  // 生产环境关闭sourcemap（避免暴露源码）
      rollupOptions: {
        // 拆分代码块，优化缓存（浏览器可缓存公共依赖）
        output: {
          chunkFileNames: 'assets/js/[name]-[hash].js',  // 公共代码块路径
          entryFileNames: 'assets/js/[name]-[hash].js',  // 入口文件路径
          assetFileNames: 'assets/[ext]/[name]-[hash].[ext]'  // 静态资源（css、图片等）路径
        }
      }
    },
    define: {
      // API路径定义
      'import.meta.env.VITE_API_BASE_URL': JSON.stringify(
        isProduction ? `${base}api` : '/api'
      ),
      'import.meta.env.MODE': JSON.stringify(mode)
    }
  }
})
